package com.empire.module.sporttery.service.footballmatch;

import java.util.*;
import javax.validation.*;

import com.empire.module.spider.api.dto.FootballMatchSportteryDTO;
import com.empire.module.sporttery.controller.admin.footballmatch.vo.*;
import com.empire.module.sporttery.controller.app.football.vo.*;
import com.empire.module.sporttery.dal.dataobject.footballmatch.FootballMatchDO;
import com.empire.framework.common.pojo.PageResult;
import com.empire.framework.common.pojo.PageParam;
import com.empire.module.sporttery.vo.FootballDayResultVO;
import com.empire.module.sporttery.vo.FootballVO;
import com.empire.module.sporttery.vo.MatchBonusItemVO;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * 竞猜足彩比赛 Service 接口
 *
 * @author 无敌仙人
 */
public interface FootballMatchService {

    /**
     * 创建竞猜足彩比赛
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createFootballMatch(@Valid FootballMatchSaveReqVO createReqVO);

    /**
     * 更新竞猜足彩比赛
     *
     * @param updateReqVO 更新信息
     */
    void updateFootballMatch(@Valid FootballMatchSaveReqVO updateReqVO);

    /**
     * 删除竞猜足彩比赛
     *
     * @param id 编号
     */
    void deleteFootballMatch(Integer id);

    /**
     * 获得竞猜足彩比赛
     *
     * @param id 编号
     * @return 竞猜足彩比赛
     */
    FootballMatchDO getFootballMatch(Integer id);

    /**
     * 【管理后台】获得竞猜足彩比赛分页
     *
     * @param pageReqVO 分页查询
     * @return 竞猜足彩比赛分页
     */
    PageResult<FootballMatchDO> getFootballMatchPage(FootballMatchPageReqVO pageReqVO);
    /**
     * 【APP前端】获得竞猜足彩比赛分页
     *
     * @param pageReqVO 分页查询
     * @return 竞猜足彩比赛分页
     */
    PageResult<FootballMatchDO> getFootballMatchPage(AppFootballMatchPageReqVO pageReqVO);
    /**
     * 【APP、web前端】根据start_time获取竞猜足彩比赛
     * @param pageReqVO 比赛场次
     * @return 竞猜足彩比赛
     */
   List<FootballMatchDO> getFootballMatchByDay(AppFootballMatchPageReqVO pageReqVO);
    /**
     * 【APP、web前端】获得足球竞猜每天的命中统计
     * @param pageReqVO 查看的数据范围
     * @return 获得足球竞猜每天的命中统计
     */
    List<FootballDayResultVO> getDayResults(AppFootballMatchPageReqVO pageReqVO);
    /**
     * 【APP、web前端】 获取当天及以后未开奖的比赛
     * @return 获得足球竞猜每天的命中统计
     */
    List<FootballMatchDO> getMatchs();

    /**
     * 【APP、web前端】 计算奖金
     * @param vo 选择的比赛列表
     * @return 竞猜足彩比赛
     */
    AppFootballBuySchemeRespVO calculateBonus(AppFootballCalculateBonusReqVO vo,List<MatchBonusItemVO> list);

    /**
     * 筛选重要场次，记录到数据，可以在界面显示
     *
     * @param fid       赛事Id
     * @param index     赔率：1-胜；2-平；3-负
     *                       4-让胜  5-让平  6-让负
     * @return 成功/失败
     */
    Boolean footballMatchSelect(Integer fid, Integer index);
}
